package com.xinruke.hostels.common.constants;

import java.util.HashMap;
import java.util.Map;

/**
 * @ClassName ExceptCodeConstants
 * @Description 异常编码定义
 * @Author Chenry
 * @Date 2019/07/27
 * @Version 1.0
 **/
public class ExceptCodeConstants {

    /* 特定异常 */
    public static class Special {
        // 处理成功[业务处理成功]
        public static final String SUCCESS = "000000";

        // 系统级异常[其它系统级异常，未知异常]
        public static final String SYSTEM_ERROR = "999999";

        /**
         * 传入的{0}参数为空
         */
        public static final String PARAM_IS_NULL = "888888";

        /**
         * 业务返回参数{0}
         */
        public static final String BUSI_MSG = "777777";

        // 未查询到记录[查询无记录]
        public static final String NO_RESULT = "000001";

        // {0}未查询到记录
        public static final String NO_RESULT_MSG = "000004";
        /**
         * 参数类型不正确{0}
         */
        public static final String PARAM_TYPE_NOT_RIGHT = "000002";

        // 未配置系统参数或未刷新缓存
        public static final String NO_DATA_OR_CACAE_ERROR = "000003";
    }

    public static class Customers {

        // 客户信息不存在 [客户{0}信息不存在]
        public static final String CUST_NOT_EXISTS = "101001";

        // 客户证件号码不合法 [客户{0}证件号码不合法]
        public static final String CUST_CERTNUM_OFF = "101002";

        // 客户信息已存在 [客户{0}已存在]
        public static final String CUST_EXISTS = "101003";

        // 客户xx不合规格 [客户{0}不合规]
        public static final String CUST_OFF_GAUGE = "101004";

        // 值不在参数表配置的可选范围内 [客户{0}值未在参数表配置的可选值范围内]
        public static final String CUST_NOT_RANGE = "101005";

        // 用户名或密码错误 [用户名或密码错误]
        public static final String CUSTNAME_PWD_ERROR = "101006";

        // 注册时登录账号必须是EMAIL [客户{0}必须是Email]
        public static final String IS_EMAIL = "101007";

        // 登录时登录账号必须是EMAIL或手机号码 [客户{0}必须是Email或手机号码]
        public static final String IS_EMAIL_OR_MOILE = "101008";

        // 证件类型和证件号码必须同时传入 [客户{0}必须同时传入]
        public static final String IS_SAME_TIME_PARAM = "101009";

        // 账户信息不存在 [客户{0}账户信息不存在]
        public static final String ACCT_NOT_EXISTS = "101010";

        // 网厅资料扩展信息不存在 [根据条件{0}，网厅资料扩展信息不存在]
        public static final String NET_ACCT_EXTEND_NOT_EXISTS = "101011";

        // 该客户为黑名单客户
        public static final String IS_BLACK_CUSTOMER = "101012";

        // 账单寄送地址不存在 [账户{0}账单寄送地址不存在]
        public static final String ACCT_BILL_POST_NOT_EXISTS = "101013";

        // 网厅账号不存在[网厅账号{0}不存在]
        public static final String NET_ACCT_NOT_EXISTS = "101014";

        // 邮箱{0}已被绑定
        public static final String MAIL_IS_BINDED = "101015";

        // 手机号码已经被绑定[手机号{0},已是网厅登录账号]
        public static final String SERVICE_NUM_IS_BINDED = "101016";

        // 证件类型不是身份证
        public static final String CERT_TYPE_OFF = "101017";

        // 网厅账号已存在[网厅账号{0}已存在]
        public static final String NET_ACCT_EXISTS = "101018";

        // [网厅企业帐号登陆密码错误]
        public static final String NET_ACCT_CO_PWD_ERROR = "101019";

        // 客户资料新建失败，具体的原因是[{0}]
        public static final String CUST_REG_FAIL = "101020";

        // 手机号对应的客户信息和网厅帐号认证的客户信息不一致
        public static final String NET_ACCT_VERIFY_INFO_NOT_MATCH = "101021";

        // 请等待XX分钟后重新发起认证[请等待{0}分钟后重新发起认证]
        public static final String CUST_VERIFY_FAIL = "101022";

        // 您已认证成功
        public static final String CUST_VERIFY_SUCESS = "101023";

        // 集团客户{0}扩展信息不存在。
        public static final String CO_EXTEND_NOT_EXIST = "101024";

        // 集团客户{0}关键人信息不存在。
        public static final String CO_LEADER_NOT_EXIST = "101025";

        // 不能过户到原账户{0}。
        public static final String ACCT_TRANSFER_FAIL = "101028";

    }

    public static class Channels {
        // 发展人编码{0}已存在
        public static final String DEVELOPER_CODE_EXISTS = "110001";
    }

    public static class User {

        // 参数不能为空
        public static final String PARAM_CAN_NOT_NULL = "120001";

    }

    public static class Order {
        public static final Map<String, String> INFO = new HashMap<String, String>();

        /**
         * 您选择的商品已下线，请重新确认商品信息
         **/
        public static final String OFFLINE_ONLY = "130001";
        /**
         * 您选择的商品汇率发生改变，请重新确认商品信息
         **/
        public static final String RATE_CHANGE_ONLY = "130002";
        /**
         * 您选择的商品汇率发生改变或已下线，请重新确认商品信息
         **/
        public static final String RATE_CHANGE_OFFLINE_BOTH = "130003";
        /**
         * 我们无法在您选择的“取汇时间”准备好商品，请重新选择取汇时间
         **/
        public static final String FETCH_TIME_ERROR = "130004";

        /**
         * 您选择的商品已下线（原订单已取消，请重新下单）
         **/
        public static final String OFFLINE_ONLY_CANCEL = "130005";
        /**
         * 您选择的商品汇率发生改变（原订单已取消，请重新下单）
         **/
        public static final String RATE_CHANGE_ONLY_CANCEL = "130006";
        /**
         * 您选择的商品汇率发生改变或已下线（原订单已取消，请重新下单）
         **/
        public static final String RATE_CHANGE_OFFLINE_BOTH_CANCEL = "130007";
        /**
         * 我们无法在您选择的“取汇时间”准备好商品（原订单已取消，请重新下单）
         **/
        public static final String FETCH_TIME_ERROR_CANCEL = "130008";
        /**
         * 商品金额不正确
         **/
        public static final String AMT_ERROR = "130009";

        /**
         * 未查询到订单详情
         **/
        public static final String ORDER_DETAIL_NOT_FOUND = "130010";

        /**
         * 未查询到合伙伙伴的手续费
         **/
        public static final String CHARGE_NOT_FOUND = "130011";


        public static final String ERROR_MSG_OFFLINE_ONLY = "您选择的商品已下线，请重新确认商品信息";
        public static final String ERROR_MSG_RATE_CHANGE_ONLY = "您选择的商品汇率发生改变，请重新确认商品信息";
        public static final String ERROR_MSG_RATE_CHANGE_OFFLINE_BOTH = "您选择的商品汇率发生改变或已下线，请重新确认商品信息";
        public static final String ERROR_MSG_FETCH_TIME_ERROR = "我们无法在您选择的“取汇时间”准备好商品，请重新选择取汇时间";

        public static final String ERROR_MSG_OFFLINE_ONLY_PAY = "您选择的商品已下线（原订单已取消，请重新下单）";
        public static final String ERROR_MSG_RATE_CHANGE_ONLY_PAY = "您选择的商品汇率发生改变（原订单已取消，请重新下单）";
        public static final String ERROR_MSG_RATE_CHANGE_OFFLINE_BOTH_PAY = "您选择的商品汇率发生改变或已下线（原订单已取消，请重新下单）";
        public static final String ERROR_MSG_FETCH_TIME_ERROR_PAY = "我们无法在您选择的“取汇时间”准备好商品（原订单已取消，请重新下单）";
        public static final String ERROR_MSG_AMT_ERROR = "定金定额不正确，请联系客服";

        static {
            INFO.put(OFFLINE_ONLY, ERROR_MSG_OFFLINE_ONLY);
            INFO.put(RATE_CHANGE_ONLY, ERROR_MSG_RATE_CHANGE_ONLY);
            INFO.put(RATE_CHANGE_OFFLINE_BOTH, ERROR_MSG_RATE_CHANGE_OFFLINE_BOTH);
            INFO.put(FETCH_TIME_ERROR, ERROR_MSG_FETCH_TIME_ERROR);
            INFO.put(OFFLINE_ONLY_CANCEL, ERROR_MSG_OFFLINE_ONLY_PAY);
            INFO.put(RATE_CHANGE_ONLY_CANCEL, ERROR_MSG_RATE_CHANGE_ONLY_PAY);
            INFO.put(RATE_CHANGE_OFFLINE_BOTH_CANCEL, ERROR_MSG_RATE_CHANGE_OFFLINE_BOTH_PAY);
            INFO.put(FETCH_TIME_ERROR_CANCEL, ERROR_MSG_FETCH_TIME_ERROR_PAY);
            INFO.put(AMT_ERROR, ERROR_MSG_AMT_ERROR);
        }
    }

    public static class Redis {

        // 未查询到
        public static final String RESULT_NULL = "140001";

        // 查询结果错误
        public static final String RESULT_ERROR = "140002";
    }

    public static class Currency {

        // 不存在的币种id
        public static final String ID_NOT_FOUND = "150001";

        // 不存在的币种code
        public static final String CODE_NOT_FOUND = "150002";
    }

    public static class Rate {
        // 未查询到交易汇率
        public static final String TRADE_RATE_NOT_FOUND = "150003";
    }


    public static class Partner {

        // 商户编号已经存在
        public static final String PARTNERNO_EXISTS = "160001";

        // 合作伙伴编号不能为空
        public static final String PARTNERNO_CAN_NOT_BE_NULL = "160002";
    }
}
